package kr.ac.kaist.resl.lilliput.rest; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.Map; import kr.ac.kaist.resl.lilliput.util.Util; import org.bson.types.ObjectId; import org.json.JSONException; import org.json.JSONObject; import org.restlet.ext.json.JsonRepresentation; import org.restlet.resource.Get; import org.restlet.resource.ServerResource; import com.mongodb.BasicDBObject; import com.mongodb.DB; import com.mongodb.DBCollection; import com.mongodb.DBObject; import com.mongodb.Mongo; import com.mongodb.MongoException; import edu.stanford.smi.protege.model.Project; import edu.stanford.smi.protege.server.RemoteProjectManager; import edu.stanford.smi.protegex.owl.model.OWLModel; import edu.stanford.smi.protegex.owl.model.OWLObjectProperty; import edu.stanford.smi.protegex.owl.model.RDFIndividual; public class PlaceEvents extends ServerResource { @SuppressWarnings("rawtypes") @Get("json") public JsonRepresentation toJson() throws JSONException { try { String epc = (String)getRequest().getAttributes().get("uid"); //Save Space to Ontology if it is not saved RemoteProjectManager rpm = RemoteProjectManager.getInstance(); Project p = rpm.getProject("localhost:5100", "Lilliput", "1234", "IoTSocialGraph", true); OWLModel owlModel = (OWLModel)p.getKnowledgeBase(); RDFIndividual spaceInd = owlModel.getOWLIndividual(epc); OWLObjectProperty objectEventProp = owlModel.getOWLObjectProperty("hasObjectEventIn"); OWLObjectProperty spaceEventProp = owlModel.getOWLObjectProperty("hasSpaceEvent"); JSONObject returnJSON = new JSONObject(); List<String> objectEventIDs = new ArrayList<String>(); List<String> spaceEventIDs = new ArrayList<String>(); Collection oeCol = spaceInd.getPropertyValues(objectEventProp); Iterator oeIter = oeCol.iterator(); Collection seCol = spaceInd.getPropertyValues(spaceEventProp); Iterator seIter = seCol.iterator(); while( oeIter.hasNext() ) { RDFIndividual tempInd = (RDFIndividual)oeIter.next(); objectEventIDs.add(Util.individualToBrowserText(tempInd.getBrowserText())); System.out.println(tempInd.getBrowserText() + "is added to list"); } while( seIter.hasNext() ) { RDFIndividual tempInd = (RDFIndividual)seIter.next(); spaceEventIDs.add(Util.individualToBrowserText(tempInd.getBrowserText())); System.out.println(tempInd.getBrowserText() + "is added to list"); } Mongo m = new Mongo("143.248.106.26", 27017); DB db = m.getDB("Lilliput"); //������ size �� 1��. for(int i = 0 ; i < objectEventIDs.size(); i ++ ) { DBCollection collection = db.getCollection("ObjectEvent"); DBObject query = new BasicDBObject(); query.put("_id",new ObjectId(objectEventIDs.get(i))); DBObject queriedObject = collection.findOne(query); Map queriedMap = queriedObject.toMap(); JSONObject queriedJson = new JSONObject(queriedMap); returnJSON.put("ObjectEvent", queriedJson); } for(int i = 0 ; i < spaceEventIDs.size(); i ++ ) { DBCollection collection = db.getCollection("SpaceEvent"); DBObject query = new BasicDBObject(); query.put("_id",new ObjectId(spaceEventIDs.get(i))); DBObject queriedObject = collection.findOne(query); Map queriedMap = queriedObject.toMap(); JSONObject queriedJson = new JSONObject(queriedMap); returnJSON.put("SpaceEvent", queriedJson); } JsonRepresentation representation = new JsonRepresentation(returnJSON); return representation; } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MongoException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } JSONObject err = new JSONObject(); err.put("message", "error occured"); JsonRepresentation representation = new JsonRepresentation(err); return representation; } }